#pragma once

#include "State.h"

class CStateComposite : public CState<TStateCompositeData>
{
private:
	CStatePtr m_pIniState;
	TStateList m_pSubStates;
public:
	CStateComposite(CStateGraphPtr pStateGraph, CStateDataPtr pStateData);
	virtual void OnEntry(CStateResultPtr pResult);
	virtual void OnExit(CStateResultPtr pResult);
	virtual void Process(CStateResultPtr pResult);
	virtual void Clean();
	virtual void Build();

}

typedef SmartPtr<CStateComposite> CStateCompositePtr;